這次要完成一個能夠自動更新的APP
但是又必須符合以下條件:
- 不打算放在Google Store
- 不需要手動認證安裝(避開Installer,你真的要安裝嗎?->確定。這件事)
可以參考這張圖知道,分別要做以下幾件事情:
- 檢查Apk版本
- 下載新的Apk(Target new Apk url)
- 安裝(安裝工作交給另外一個APP執行)
直接跳到安裝部分
安裝
這篇Silent install apk programmatically by system app (without root)有提到silent install apk的一些事項:
- 加入
android.permission.INSTALL_PACKAGES
的權限 - signed my application using
signapk.jar
這部分很麻煩,沒做 - 接著可以用指令
pm install /.../app.apk
,進行安裝
PS: Updating application 有分別兩種方式
- use
pm install -r /.../app.apk
- 先下
pm uninstall com.mydomain.myapp
,但是需要有android.permission.DELETE_PACKAGES
的權限
以下是程式碼的部分
<uses-permission android:name="android.permission.ACCESS_SUPERUSER" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
1 | String filePath = Environment.getExternalStorageDirectory().toString() + "/your_app_directory/your_app_filename.apk"; |
Troubles
android.permission.INSTALL_PACKAGES
Project -> Clean
Source:
- 忘了
Silent install
Source:
- Android常用代码之普通及系统权限静默安装APK
- Android常用代码之APK root权限静默安装
- [Android]实现静默安装APK的两种方法
- In Depth: Android Package Manager and Package Installer
adb push your_apk_path /system/app/
據說可以获取系统权限
# Method 1
adb remount
# Method 2
#不行的话,
adb shell su #之后将文件系统remount为读写权限:
mount -o rw,remount /system #出于安全考虑,记得完事后remount回只读:
mount -o ro,remount /system
# Method 3
mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system
Source: